<?php
class UsersController extends AppController {

	var $name = 'Users';

	function index() {
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Los datos son invalidos.', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('user', $this->User->read(null, $id));
	}

	function add() {
           
		if (!empty($this->data))
		{
			$this->User->create();
                        $pass2 = $this->data['User']['user_password'];
                        $this->log($this->data);
                        
                        $this->data['User']['user_password'] = md5($this->data['User']['user_password']);
                        $this->data['User']['user_password_confirm'] = md5($this->data['User']['user_password_confirm']);
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Los datos se han guardado correctamente.', true));
                                $username = $this->data['User']['username'];
                                $userTypes = $this->data['User']['usertypes'];
                                $this->set(compact('userTypes','pass2','username'));
				$this->render('confirma');
			} else {
				$this->Session->setFlash(__('Ha ocurrido un error al guardar los datos. Por favor pruebe luego.', true));
			}
		}
                $pass = $this->User->RandomString(15,TRUE,TRUE,FALSE);
                $userTypes = $this->User->UsersTypes->find('list',array('fields' => array('UsersTypes.descripcion')));
                                $this->log($userTypes);
                $this->set(compact('userTypes','pass'));

	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Los datos son invalidos', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Los datos se han guardado correctamente.', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Ha ocurrido un error al guardar los datos. Por favor pruebe luego.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
		$vatStatuses = $this->User->VatStatus->find('list');
		$this->set(compact('vatStatuses'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Los datos son invalidos', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->User->delete($id)) {
			$this->Session->setFlash(__('Los datos han sido eliminados correctamente.', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Ha ocurrido un error al eliminar los datos. Por favor pruebe luego.', true));
		$this->redirect(array('action' => 'index'));
	}

	function login(){ 
                 $this->set('title_for_layout', 'PRONACOM - Login');
		if(!empty($this->data))
			{
			if( ($user = $this->User->validateLogin($this->data['User'])) == true)
			{
                                if($user['activated']=='1'){
				   $this->Session->write('User', $user);
				   $this->redirect(array('controller' => 'masters', 'action' => 'inicio'));
				   exit();
                                }else{
                                   $this->redirect(array('controller' => 'users', 'action' => 'change',"id" => $user['id'],));   
                                }
			}
			else
			{ 
				$this->Session->setFlash('Los datos ingresados son invalidos');
			}		
		}
	}

    function logout() 
    {
		$this->Session->destroy('User');
		$this->redirect(array('controller' => 'masters', 'action' => 'index'));
		exit;
    }
      
    function change($id = null){
               if (!empty($this->data)){
                       $this->data['User']['activated'] = '1';
                       $this->data['User']['user_password'] = md5($this->data['User']['user_password']);
                       $this->data['User']['user_password_confirm'] = md5($this->data['User']['user_password_confirm']);
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('Los datos se han guardado correctamente. por favor vuelva a loguearse', true));
				$this->redirect(array('action' => 'login'));
			}else{
                            $this->log('error al grabar');
                                $this->set('nombre' , $this->data['User']['username']);
				$this->Session->setFlash(__('Ha ocurrido un error al guardar los datos. Por favor pruebe luego.', true));
			}
		}
               if (empty($this->data)){   
                   $id = $this->params['named']['id'];
			$this->data = $this->User->read(null, $id);
                        if($this->data['User']['activated'] == '1'){
                            $this->Session->setFlash(__('El Usuario Ya está activo', true));
                            $this->redirect(array('action' => 'login'));
                        }                       
		}
                 $this->set('nombre' , $this->data['User']['username']);
                 $this->set('id',$id);
     }
}
?>